#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
const int MAXN=1005,M=30;
ll a[MAXN];
bool b[MAXN];
int n;
char op[M],c[M];
bool chk(char*c,int x) {
	int num[6]={0,0,0,0,0,0},cnt=0;
	int len=strlen(c);
	for(int i=0; i<len; ) {
		if('0'<=c[i]&&c[i]<='9') {
			bool ff=c[i]=='0';
			++cnt;
			int j=i;
			for(; j<len&&'0'<=c[j]&&c[j]<='9'; ++j) {
				num[cnt]=num[cnt]*10+(c[j]-'0');
				if(num[cnt]>=65536||(cnt<5&&num[cnt]>255)) {
					return false;
				}
			}
			if(ff&&num[cnt]>0) {
				return false;
			}
			i=j;
		} else if(c[i]=='.') {
			if(cnt>=4||i==0||c[i-1]<'0'||c[i-1]>'9'||c[i+1]<'0'||c[i+1]>'9') {
				return false;
			}
			++i;
		} else if(c[i]==':') {
			if(cnt<4||i==0||c[i-1]<'0'||c[i-1]>'9'||c[i+1]<'0'||c[i+1]>'9')
				return false;
			++i;
		}
	}
	if(cnt<5)return false;
	a[x]=num[1];
	a[x]=(a[x]<<8)|num[2];
	a[x]=(a[x]<<8)|num[3];
	a[x]=(a[x]<<8)|num[4];
	a[x]=(a[x]<<16)|num[5];
	return true;
}
int main() {
	freopen("network.in","r",stdin);
	freopen("network.out","w",stdout);
	scanf("%d",&n);
	for(int i=1; i<=n; ++i) {
		scanf("%s%s",op,c);
		if(!chk(c,i)) {
			puts("ERR");
			continue;
		}
		if(op[0]=='S') {
			b[i]=false;
			bool ff=false;
			for(int j=1; j<i; ++j)
				if(!b[j]&&a[j]==a[i]) {
					puts("FAIL");
					ff=true;
					break;
				}
			if(!ff) {
				puts("OK");
			}
		} else if(op[0]=='C'){
			b[i]=true;
			bool ff=false;
			for(int j=1; j<i; ++j)
				if(!b[j]&&a[j]==a[i]) {
					printf("%d\n",j);
					ff=true;
					break;
				}
			if(!ff) {
				puts("FAIL");
			}
		}
	}
	return 0;
}
